package cn.tedu.file;

import java.io.*;

/*本类用于测试文件的读取 D：\\ready\\1.txt*/
public class TestIn {
    public static void main(String[] args) {
        //method();//字节流的读取InputStream
        method2();//高效字节流的读取
    }
    private static void method() {
        //报错：原因：InputStream是字节输入流的抽象父类，不能实例化
       // InputStream in = new InputStream();
        //1.创建字节流的读取对象，并try-catch处理
        /*try-catch:try 中放的是可能会发生异常的代码
        * catch匹配并捕获异常，如果捕获到异常就去解决*/
        try {
            InputStream in = new FileInputStream(
                    new File("D:\\ready\\1.txt"));
            //2.开始读取read（）每次读取一个字节，如果读取到了数据的末尾，返回-1
            System.out.println(in.read());//72
            System.out.println(in.read());//111
            System.out.println(in.read());//108
            System.out.println(in.read());

            //3.需求：可以利用循环重复读取文件中的所有字节
            //3.1定义变量，记录读取到的数据
            int b ;
            //3.2循环读取数据，只要不是-1，就继续循环
            while ((b = in.read())!=-1){
                //3.3打印本次读取到的字节
                System.out.println(b);
            }
            //4.释放资源
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private static void method2() {
    //1.创建高效的字节流读取对象
        try {
//            InputStream in1 = new BufferedInputStream(
//                    new FileInputStream(
//                            new File("D:\\ready\\1.txt")));
            InputStream in2 = new BufferedInputStream(
                    new FileInputStream("D:\\ready\\1.txt"));
            //2.开始读取read（）每次读取一个字节，如果读取到了数据的末尾，返回-1
            System.out.println(in2.read());//72
            System.out.println(in2.read());//111
            System.out.println(in2.read());//108
            System.out.println(in2.read());

            //3.需求：可以利用循环重复读取文件中的所有字节
            //3.1定义变量，记录读取到的数据
            int b ;
            //3.2循环读取数据，只要不是-1，就继续循环
            while ((b = in2.read())!=-1){
                //3.3打印本次读取到的字节
                System.out.println(b);
            }
            //4.释放资源
            in2.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
